﻿
import java.util.Random;

public class Main {

    public static void main(String[] args) {

        Random rand = new Random();

        Machine m = new Aircraft();

        while( true ) {
            int op = rand.nextInt( 10 ); // 随机产生 [ 0 , 10 ) 之间的数字
            switch( op ) {
                case 0 :
                    // 需要判断能量是否足以完成 陆地驾驶 操作，若不足就跳出循环 (如何从switch直接跳出while循环?)
                    // 执行 陆地驾驶 操作 ( Machine 不具备陆地驾驶能力，需要转换为 Roadable 才可以调用 run 方法 )
                    if ( m.getEnergy() >= 10){
                        Aircraft a = (Aircraft) m;
                        a.run();
                        System.out.println(m.getEnergy());
                        continue;
                    }else
                        System.out.println("能量不足以在陆地驾驶，刹车！");
                    break;
                case 1 :
                    // 需要判断能量是否足以完成 水中航行 操作，若不足就跳出循环
                    // 执行 水中航行 操作 ( Machine 不具备水中航行能力，需要转换为 Voyageable 才可以调用 voyage 方法 )
                    if ( m.getEnergy() >= 15){
                        Aircraft a = (Aircraft) m;
                        a.voyage();
                        System.out.println(m.getEnergy());
                        continue;
                    }else
                        System.out.println("能量不足在水中航行，上浮！");
                    break;
                case 2 :
                    // 需要判断能量是否足以完成 空中飞行 操作，若不足就跳出循环
                    // 执行 空中飞行 操作 ( Machine 不具备空中飞行能力，需要转换为 Flyable 才可以调用 fly 方法 )
                    if ( m.getEnergy() >= 25){
                        Aircraft a = (Aircraft) m;
                        a.fly();
                        System.out.println(m.getEnergy());
                        continue;
                    }else
                        System.out.println("能量不足以在空中飞行，迫降！");
                    break;
                default :continue;
                    // 不支持的操作
            }
            break;

        }
        System.out.println("飞行器 的剩余能量：" + m.getEnergy());
// 最后输出 飞行器 的剩余能量


    }


}

//接口
interface Voyageable {
    void voyage();
}

interface Roadable {
    void run();
}

interface Flyable {
    void fly();
}

